package com.lanou3g.code0420;

import com.sun.java.swing.plaf.windows.WindowsInternalFrameTitlePane;

import java.io.*;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Scanner;

/**
 * Created by dllo on 18/4/20.
 */

//客户端与服务器连接之前,需要经过三次握手
//客户端与服务器断开之前,需要经过四次握手
//TCP优点稳,确定慢
//一个客户端连接一个服务器,一个服务器连接多个客户端
public class Main {
    public static void main(String[] args) {
        //TCP客户端,使用无参的构造方法,这个socket对象自动绑定本地的一个没有被使用的端口号
        Socket socket = new Socket();
        //socket,TCP客户端对象
        PrintWriter pw = null;
        Scanner scanner = new Scanner(System.in);
        try {
            //socket客户端连接到远程服务器
            //28行需要指定服务器的IP地址和端口号
            socket.connect(new InetSocketAddress("127.0.0.1", 2333));
            //28行代码执行完成,意味着三次握手结束,即客户端已经与服务器连接
            //如果客户端没有连接上,就会卡死在这一行(28行)
            //开启线程来读数据
            new ReadThread(socket).start();
            OutputStream os = socket.getOutputStream();
            pw = new PrintWriter(new OutputStreamWriter(os));
            //pw.println(" HelloSocket");
            while (true) {
                String line = scanner.nextLine();
                pw.println(line);
                pw.flush();
                //起冲刷作用,将8196里的东西实时发送出去
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (pw != null) {
                pw.close();
            }
            //socket对象使用完成后,也需要关闭
            try {
                socket.close();
                //当执行完这行代码(52行),4次挥手结束完毕
            } catch (Exception e) {
                e.printStackTrace();
            }
            scanner.close();//scanner使用完成后关闭
        }
    }
}
